package cn.dao;

import cn.model.TUser;
import cn.model.VUserRole;

import java.util.List;

/**
 * 用户数据业务接口
 * @author CJJ
 * @version 2019-10-29
 */
public interface UserDAO {
	/**
	 * 添加一个用户
	 *
	 * @param user 用户对象
	 * @return 添加成功返回受影响的行数
	 */
	public int addUser(TUser user);

	/**
	 * 删除一个用户
	 *
	 * @param userid 用户对象
	 * @return 添加成功返回受影响的行数
	 */
	public boolean deleteUser(String userid);

	/**
	 * 修改一个用户
	 *
	 * @param user 需要修改的用户对象
	 * @return
	 */
	public boolean modifyUser(TUser user);

	/**
	 * 根据条件获取用户的列表
	 *
	 * @param wherecondition 组合查询条件字符串,如："userRole = '超级管理员' and userid = 'admin'"
	 * @param currentPage    按分页查询的当前页
	 * @param pageSize       按分页查询的每页数量
	 * @return List
	 */
	public List<VUserRole> getUserList(String wherecondition, int currentPage, int pageSize);

	/**
	 * 根据条件获取符合条件的用户的数量
	 *
	 * @param wherecondition 如："userRole = '超级管理员' and userid = 'zhangjs'"
	 * @return
	 */
	public int getUserAmount(String wherecondition);

	/**
	 * 密码修改
	 *
	 * @param userid 用户id
	 * @param pwd    密码
	 * @return 用户对象
	 */
	public boolean Upedtpwd(String userid, String pwd);

	/**
	 * 通过id查询用户
	 *
	 * @param userid
	 * @return
	 */
	public TUser getUserById(String userid);

	/**
	 * 在添加用户时，先通过添加的用户id检测该用户是否存在
	 *
	 * @param userid 输入的用户名
	 * @return 返回值>0，该用户已存在；返回值<0,该用户不存在，可以添加
	 */
	public int queryUserById(String userid);

	/**
	 * 通过用户ID查询用户信息
	 *
	 * @param userid 用户ID
	 * @return 返回用户信息列表
	 */
	public VUserRole getVUserRoleById(String userid);

	/**
	 * 用户登录业务接口
	 *
	 * @param userid 用户ID
	 * @param pwd    用户密码
	 * @return 返回登录对象用户信息列表
	 */
	public List<VUserRole> userLogin(String userid, String pwd);

	/**
	 * 通过登录与退出来修改最后登录时间和登录状态
	 *
	 * @param lastlogindate 最后登录时间
	 * @param loginstatus   登录状态
	 * @return
	 */
	public boolean updateInfoByLogin(String lastlogindate, String loginstatus, String userid);

}

